home *** CD-ROM | disk | FTP | other *** search
- import java.applet.AudioClip;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.Frame;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.image.ImageObserver;
- import java.io.DataInputStream;
- import java.io.FilterInputStream;
- import java.io.IOException;
- import java.net.MalformedURLException;
- import java.net.URL;
-
- class LoopBase extends Thread {
- private static final int m_kMajorPlayerVersion = 1;
- private static final int m_kMinorPlayerVersion = 2;
- private static final int m_kFileSectionTerm = -1;
- public static final int TRIG_NONE = 0;
- public static final int TRIG_AUTOMATIC = 1;
- public static final int TRIG_LEFT_SINGLE = 2;
- public static final int TRIG_LEFT_DOUBLE = 4;
- public static final int TRIG_RIGHT_SINGLE = 8;
- public static final int TRIG_RIGHT_DOUBLE = 16;
- public static final int TRIG_ANY_CLICK = 30;
- public static final int EXIT_AUTOMATIC = 0;
- public static final int EXIT_LEFT_SINGLE = 1;
- public static final int EXIT_LEFT_DOUBLE = 2;
- public static final int EXIT_RIGHT_SINGLE = 4;
- public static final int EXIT_RIGHT_DOUBLE = 8;
- public static final int EXIT_ANY_CLICK = 5;
- public static final int STATUS_EMPTY = 0;
- public static final int STATUS_LOADING = 1;
- public static final int STATUS_LOADED = 2;
- public static final int STATUS_PLAYING = 3;
- public static final int STATUS_SUSPENDED = 4;
- public static final int STATUS_EXIT = 5;
- private WebMotion m_theApp;
- private Image m_imageBuffer;
- private Graphics m_graphBuffer;
- private Graphics m_graphApp;
- private boolean m_bThreadSuspended = false;
- private Frame m_frameTop;
- private int m_iMajorFileVersion;
- private int m_iMinorFileVersion;
- private int m_iCurrentFrame;
- private int m_iStartFrame;
- private int m_iEndFrame;
- private int m_iFinalFrame;
- private int m_iFrameCount;
- private int m_iPause;
- private int m_iPauseExit;
- private boolean m_bInteruptPauseEvent = false;
- private int m_iFramesPerSecond = 12;
- private boolean m_bDoLoop = true;
- private int m_iStatus;
- private long m_iWhenLastClick;
- private boolean m_bCurrentActorsLoaded = false;
- private FrameElement[][] m_frames;
- private Image[][] m_actors;
- private Point[][] m_regPoints;
- private String[] m_arstrHyperLinks;
- private AudioClip[] m_arAudioClips;
- private Image m_imageBackground;
- private MediaTracker m_tracker;
- private String m_strDefaultHyperLink;
- private String m_strDefaultTarget;
-
- LoopBase(WebMotion var1) {
- if (var1 != null) {
- this.m_theApp = var1;
- this.m_imageBuffer = this.m_theApp.createImage(this.m_theApp.size().width, this.m_theApp.size().height);
- this.m_graphBuffer = this.m_imageBuffer.getGraphics();
- this.initAnim();
- }
-
- }
-
- public void run() {
- int var1 = 0;
- int var2 = 0;
- long var3 = 0L;
- long var5 = 0L;
- int var7 = 0;
- boolean var8 = false;
- double var9 = (double)0.0F;
- int var11 = 1;
- this.m_graphApp = this.m_theApp.getGraphics();
-
- while(true) {
- var1 = this.m_iFramesPerSecond;
- var2 = var1 != 0 ? 1000 / var1 : 0;
- var5 = System.currentTimeMillis();
- if (var5 - var3 < (long)var2 || this.m_iPause != 0) {
- try {
- if (this.m_iPause == 0) {
- Thread.sleep((long)var2 - (var5 - var3));
- } else {
- var9 = (double)((long)var2 - (var5 - var3) + (long)this.m_iPause);
- this.m_bInteruptPauseEvent = false;
- if (var9 > (double)0.0F) {
- int var12 = this.m_iCurrentFrame;
- this.m_iCurrentFrame = var11;
-
- while(var9 > (double)0.0F && !this.m_bInteruptPauseEvent) {
- try {
- Thread.sleep((long)Math.min(var9, (double)250.0F));
- } catch (InterruptedException var18) {
- }
-
- var9 -= Math.min(var9, (double)250.0F);
- if (!this.m_bCurrentActorsLoaded) {
- this.update();
- }
- }
-
- this.m_iCurrentFrame = var12;
- this.m_iPause = 0;
- this.m_iPauseExit = 0;
- }
- }
- } catch (InterruptedException var20) {
- }
- }
-
- synchronized(this){}
-
- try {
- var8 = false;
- var7 = this.lbGetStatus();
- if (var7 == 3) {
- var3 = System.currentTimeMillis();
- this.update();
- this.processEvents(this.m_frames[this.m_iCurrentFrame - 1][this.m_frames[this.m_iCurrentFrame - 1].length - 1], 1);
- var11 = this.m_iCurrentFrame++;
- if (this.m_iCurrentFrame > this.m_iEndFrame) {
- this.m_iCurrentFrame = this.m_iStartFrame;
- if (!this.m_bDoLoop) {
- this.m_iCurrentFrame = this.m_iFinalFrame;
- this.update();
- this.setStatus(4);
- var8 = true;
- }
- }
- } else {
- if (var7 == 5) {
- break;
- }
-
- this.update();
- var8 = true;
- }
- } catch (Throwable var21) {
- throw var21;
- }
-
- if (var8) {
- try {
- Thread.sleep(250L);
- } catch (InterruptedException var19) {
- }
- }
- }
-
- if (this.m_graphApp != null) {
- this.m_graphApp.dispose();
- this.m_graphApp = null;
- }
-
- }
-
- public synchronized void lbStopAnim() {
- this.lbGotoFrame(this.m_iFinalFrame);
- this.update();
- this.setStatus(5);
- }
-
- protected synchronized boolean initAnim() {
- this.m_iStatus = 0;
- this.m_iMajorFileVersion = 0;
- this.m_iMinorFileVersion = 0;
- this.m_iCurrentFrame = 1;
- this.m_iPause = 0;
- this.m_iPauseExit = 0;
- this.m_bInteruptPauseEvent = false;
- this.m_iFrameCount = 0;
- this.m_iFramesPerSecond = 12;
- this.m_bCurrentActorsLoaded = false;
- this.m_frames = null;
- this.m_actors = null;
- this.m_regPoints = null;
- this.m_arstrHyperLinks = null;
- this.m_arAudioClips = null;
- this.m_imageBackground = null;
- this.m_tracker = null;
- this.m_strDefaultHyperLink = null;
- this.m_strDefaultTarget = null;
- return this.m_imageBuffer != null && this.m_graphBuffer != null;
- }
-
- public synchronized boolean lbLoadAnim(String var1, String var2, boolean var3) throws IOException {
- byte[] var4 = new byte[9];
- int var7 = 0;
- int var8 = 0;
- int var9 = 0;
- int var10 = -1;
- if (!this.initAnim()) {
- System.out.println("Animation could not be initialized.");
- return false;
- } else {
- this.setStatus(1);
- this.update();
- if (var1 != null && var2.length() > 0) {
- if (!var1.endsWith("/") && !var1.endsWith("\\")) {
- var1 = var1 + "/";
- }
- } else {
- var1 = "./";
- }
-
- if (var2 != null && var2.length() > 0) {
- DataInputStream var11;
- try {
- var11 = new DataInputStream((new URL(this.m_theApp.getDocumentBase(), var1 + var2)).openStream());
- } catch (Exception var22) {
- System.out.println("Error opening " + var1 + var2 + " - " + ((Throwable)var22).getMessage());
- return false;
- }
-
- int var5 = var11.readInt();
- var4[0] = var11.readByte();
- var4[1] = var11.readByte();
- var4[2] = var11.readByte();
- var4[3] = var11.readByte();
- var4[4] = var11.readByte();
- var4[5] = var11.readByte();
- var4[6] = var11.readByte();
- var4[7] = var11.readByte();
- var4[8] = var11.readByte();
- this.m_iMajorFileVersion = var11.readInt();
- this.m_iMinorFileVersion = var11.readInt();
- this.m_iFrameCount = var11.readInt();
- var7 = var11.readInt();
- var8 = var11.readInt();
- var9 = var11.readInt();
- var10 = var11.readInt();
- this.m_iFramesPerSecond = var11.readInt();
- if (this.m_iMajorFileVersion <= 1 && (this.m_iMajorFileVersion != 1 || this.m_iMinorFileVersion <= 2)) {
- int var6 = var11.readInt();
- if (var6 != -1) {
- throw new IOException("Missing header terminator.");
- } else {
- boolean var34 = false;
- boolean var13 = false;
- if (var7 > 0) {
- this.m_actors = new Image[var7][];
- this.m_regPoints = new Point[var7][];
-
- try {
- for(int var35 = 0; var35 < var7; ++var35) {
- int var15 = var11.readInt();
- this.m_actors[var35] = new Image[var15];
- this.m_regPoints[var35] = new Point[var15];
-
- for(int var14 = 0; var14 < var15; ++var14) {
- this.m_regPoints[var35][var14] = new Point(0, 0);
- this.m_regPoints[var35][var14].x = var11.readShort();
- this.m_regPoints[var35][var14].y = var11.readShort();
- }
- }
- } catch (IOException var26) {
- throw new IOException("Error reading actor resource info.");
- }
- }
-
- var6 = var11.readInt();
- if (var6 != -1) {
- throw new IOException("Missing actor resource terminator.");
- } else {
- this.m_frames = new FrameElement[this.m_iFrameCount][];
-
- try {
- for(int var36 = 0; var36 < this.m_iFrameCount; ++var36) {
- int var16 = var11.readInt();
- this.m_frames[var36] = new FrameElement[var16];
-
- for(int var39 = 0; var39 < var16; ++var39) {
- this.m_frames[var36][var39] = new FrameElement();
- this.m_frames[var36][var39].iChannel = var11.readInt();
- this.m_frames[var36][var39].iTrigger = var11.readInt();
- this.m_frames[var36][var39].iExit = var11.readInt();
- this.m_frames[var36][var39].iSound = var11.readInt();
- this.m_frames[var36][var39].iHyperLinkURL = var11.readInt();
- this.m_frames[var36][var39].iPause = var11.readInt();
- this.m_frames[var36][var39].iFPS = var11.readInt();
- this.m_frames[var36][var39].iActor = var11.readInt();
- this.m_frames[var36][var39].iCel = var11.readInt();
- this.m_frames[var36][var39].left = var11.readShort();
- this.m_frames[var36][var39].top = var11.readShort();
- this.m_frames[var36][var39].right = var11.readShort();
- this.m_frames[var36][var39].bottom = var11.readShort();
- }
- }
- } catch (IOException var25) {
- throw new IOException("Error reading frame element data.");
- }
-
- var6 = var11.readInt();
- if (var6 != -1) {
- throw new IOException("Missing frame element data terminator.");
- } else {
- try {
- if (var9 > 0) {
- this.m_arstrHyperLinks = new String[var9];
-
- for(int var37 = 0; var37 < var9; ++var37) {
- this.m_arstrHyperLinks[var37] = new String(var11.readLine());
- }
- }
-
- if (var10 != -1) {
- this.m_strDefaultHyperLink = this.m_arstrHyperLinks[var10];
- }
- } catch (IOException var24) {
- throw new IOException("Error reading hyperlink resources.");
- }
-
- var6 = var11.readInt();
- if (var6 != -1) {
- throw new IOException("Missing hyperlink resource terminator.");
- } else {
- try {
- ((FilterInputStream)var11).close();
- } catch (IOException var21) {
- throw new IOException("Error closing.");
- }
-
- this.m_tracker = new MediaTracker(this.m_theApp);
- this.m_imageBackground = this.m_theApp.getImage(new URL(this.m_theApp.getDocumentBase(), var1 + "__back.gif"));
- this.m_tracker.addImage(this.m_imageBackground, 0);
- this.m_tracker.checkID(0, true);
-
- for(int var41 = 0; this.m_actors != null && var41 < this.m_actors.length; ++var41) {
- try {
- for(int var40 = 0; var40 < this.m_actors[var41].length; ++var40) {
- if (this.m_actors[var41].length > var40) {
- char[] var17 = "aa0000".toCharArray();
- var17[0] = (char)(var17[0] + var41 / 26);
- var17[1] = (char)(var17[1] + var41 % 26);
- var17[2] = (char)(var17[2] + (var40 + 1) / 1000);
- var17[3] = (char)(var17[3] + (var40 + 1) % 1000 / 100);
- var17[4] = (char)(var17[4] + (var40 + 1) % 1000 % 100 / 10);
- var17[5] = (char)(var17[5] + (var40 + 1) % 1000 % 100 % 10);
- new String();
- String var18 = "__" + var17[0] + var17[1] + var17[2] + var17[3] + var17[4] + var17[5];
- this.m_actors[var41][var40] = this.m_theApp.getImage(new URL(this.m_theApp.getDocumentBase(), var1 + var18 + ".gif"));
- if (!var3) {
- this.m_tracker.addImage(this.m_actors[var41][var40], 0);
- this.m_tracker.checkID(0, true);
- } else {
- this.m_tracker.addImage(this.m_actors[var41][var40], var40 * this.m_actors.length + var41);
- this.m_tracker.checkID(var40 * this.m_actors.length + var41, true);
- }
- }
- }
- } catch (Exception var23) {
- }
- }
-
- this.m_arAudioClips = new AudioClip[var8];
-
- for(int var38 = 0; var38 < var8; ++var38) {
- char[] var42 = "0000".toCharArray();
- var42[0] = (char)(var42[0] + var38 / 1000);
- var42[1] = (char)(var42[1] + var38 % 1000 / 100);
- var42[2] = (char)(var42[2] + var38 % 1000 % 100 / 10);
- var42[3] = (char)(var42[3] + var38 % 1000 % 100 % 10);
- new String();
- String var43 = "__sd" + var42[0] + var42[1] + var42[2] + var42[3];
-
- try {
- this.m_arAudioClips[var38] = this.m_theApp.getAudioClip(new URL(this.m_theApp.getDocumentBase(), var1 + var43 + ".au"));
- if (this.m_arAudioClips[var38] == null) {
- throw new Exception();
- }
- } catch (Exception var20) {
- System.out.println("Error loading sound: " + var1 + var43 + ".au");
- }
- }
-
- try {
- this.m_theApp.showStatus("Astound WebMotion player loading actors...");
- this.m_tracker.waitForID(0);
- } catch (Exception var19) {
- }
-
- this.m_iCurrentFrame = this.m_iStartFrame = 1;
- this.m_iEndFrame = this.m_iFinalFrame = this.m_iFrameCount;
- this.m_bDoLoop = true;
- this.setStatus(2);
- this.m_theApp.showStatus("");
- return true;
- }
- }
- }
- }
- } else {
- String var12 = "Astound WebMotion Player version " + 1 + "." + 2 + " cannot playback animation version " + this.m_iMajorFileVersion + "." + this.m_iMinorFileVersion;
- this.m_theApp.showStatus(var12);
- throw new IOException(var12);
- }
- } else {
- System.out.println("LoadAnim() called with no filename.");
- return false;
- }
- }
- }
-
- public synchronized boolean lbPlayAnim() {
- boolean var1 = false;
- switch (this.lbGetStatus()) {
- case 0:
- case 1:
- case 5:
- var1 = false;
- break;
- case 2:
- this.m_iCurrentFrame = this.m_iStartFrame;
- case 3:
- case 4:
- var1 = true;
- }
-
- if (var1) {
- this.setStatus(3);
- }
-
- return var1;
- }
-
- public synchronized void lbPauseAnim(int var1, boolean var2) {
- if (this.lbGetStatus() == 3 && var1 >= 1) {
- this.m_iPause = var1 * 1000;
- this.m_iPauseExit = var2 ? 5 : 0;
- }
-
- }
-
- public synchronized void lbSuspendAnim() {
- if (this.lbGetStatus() == 3) {
- this.setStatus(4);
- }
-
- }
-
- public synchronized boolean lbGotoFrame(int var1) {
- boolean var2 = false;
- if (this.lbIsAnimLoaded() && var1 >= 1 && var1 <= this.m_iFrameCount) {
- this.m_iCurrentFrame = var1;
- var2 = true;
- }
-
- return var2;
- }
-
- public final int lbGetCurrentFrame() {
- int var1 = 0;
- if (this.lbIsAnimLoaded()) {
- var1 = this.m_iCurrentFrame;
- }
-
- return var1;
- }
-
- public final int lbGetFrameCount() {
- int var1 = 0;
- if (this.lbIsAnimLoaded()) {
- var1 = this.m_iFrameCount;
- }
-
- return var1;
- }
-
- public synchronized boolean lbSetStartFrame(int var1) {
- boolean var2 = false;
- if (this.lbIsAnimLoaded() && var1 <= this.m_iEndFrame) {
- this.m_iStartFrame = Math.max(Math.min(var1, this.m_iFrameCount), 1);
- var2 = true;
- }
-
- return var2;
- }
-
- public synchronized boolean lbSetEndFrame(int var1) {
- boolean var2 = false;
- if (this.lbIsAnimLoaded() && var1 >= this.m_iStartFrame) {
- this.m_iEndFrame = Math.max(Math.min(var1, this.m_iFrameCount), 1);
- var2 = true;
- }
-
- return var2;
- }
-
- public synchronized boolean lbSetFinalFrame(int var1) {
- boolean var2 = false;
- if (this.lbIsAnimLoaded() && var1 >= 1 && var1 <= this.m_iFrameCount) {
- this.m_iFinalFrame = var1;
- var2 = true;
- }
-
- return var2;
- }
-
- public final synchronized void lbSetDoLoop(boolean var1) {
- if (this.lbIsAnimLoaded()) {
- this.m_bDoLoop = var1;
- }
-
- }
-
- public final int lbGetSpeed() {
- int var1 = 0;
- if (this.lbIsAnimLoaded()) {
- var1 = this.m_iFramesPerSecond;
- }
-
- return var1;
- }
-
- public synchronized boolean lbSetSpeed(int var1) {
- boolean var2 = false;
- if (this.lbIsAnimLoaded() && var1 >= 0) {
- this.m_iFramesPerSecond = var1;
- var2 = true;
- }
-
- return var2;
- }
-
- public synchronized void lbSetHyperLink(String var1) {
- if (this.lbIsAnimLoaded()) {
- this.m_strDefaultHyperLink = var1;
- }
-
- }
-
- public synchronized void lbSetHyperLinkTarget(String var1) {
- if (this.lbIsAnimLoaded()) {
- this.m_strDefaultTarget = var1;
- }
-
- }
-
- protected synchronized void drawFrame(Graphics var1, int var2) {
- if (this.m_imageBackground != null) {
- var1.drawImage(this.m_imageBackground, 0, 0, (ImageObserver)null);
- }
-
- if (var2 < 0 || var2 > this.m_iFrameCount - 1) {
- System.out.println("WARNING: DrawFrame frame number out of bounds - " + var2);
- if (var2 < 0) {
- var2 = 0;
- }
-
- if (var2 > this.m_iFrameCount - 1) {
- var2 = this.m_iFrameCount - 1;
- }
- }
-
- int var5 = this.m_frames[var2].length;
- this.m_bCurrentActorsLoaded = true;
-
- for(int var4 = 0; var4 < var5 - 1; ++var4) {
- int var8 = 0;
- int var7 = 0;
- Image var3 = null;
- FrameElement var6 = this.m_frames[var2][var4];
- if (this.m_tracker.checkID(var6.iCel * this.m_actors.length + var6.iActor, true)) {
- var3 = this.m_actors[var6.iActor][var6.iCel];
- } else {
- this.m_bCurrentActorsLoaded = false;
-
- for(int var9 = var6.iCel; var9 >= 0; --var9) {
- if (this.m_tracker.checkID(var9 * this.m_actors.length + var6.iActor, true)) {
- var3 = this.m_actors[var6.iActor][var9];
- var7 = this.m_regPoints[var6.iActor][var9].x - this.m_regPoints[var6.iActor][var6.iCel].x;
- var8 = this.m_regPoints[var6.iActor][var9].y - this.m_regPoints[var6.iActor][var6.iCel].y;
- break;
- }
- }
- }
-
- if (var3 != null) {
- var1.drawImage(var3, var6.left - var7, var6.top - var8, (ImageObserver)null);
- }
- }
-
- }
-
- protected synchronized boolean processEvents(FrameElement var1, int var2) {
- if (var1 != null && var2 > 0 && (var1.iTrigger & var2) != 0) {
- boolean var3 = false;
- if (var1.iFPS != -1) {
- this.m_iFramesPerSecond = var1.iFPS;
- var3 = true;
- }
-
- if (var1.iPause >= 0) {
- this.m_iPause = var1.iPause == 0 ? 17280000 : var1.iPause * 100;
- this.m_iPauseExit = var1.iExit;
- var3 = true;
- } else if (var1.iSound != -1 && this.m_arAudioClips[var1.iSound] != null) {
- this.m_arAudioClips[var1.iSound].play();
- var3 = true;
- } else if (var1.iHyperLinkURL != -1) {
- String var4 = this.m_arstrHyperLinks[var1.iHyperLinkURL];
-
- try {
- if (var4 != null && var4.startsWith("FRAME:")) {
- int var8 = Integer.parseInt(var4.substring(6));
- this.lbGotoFrame(var8);
- var3 = true;
- } else if (var4 != null && var4.length() > 0) {
- URL var5 = new URL(var4);
- if (this.m_strDefaultTarget != null) {
- this.m_theApp.getAppletContext().showDocument(var5, this.m_strDefaultTarget);
- } else {
- this.m_theApp.getAppletContext().showDocument(var5);
- }
-
- var3 = true;
- }
- } catch (MalformedURLException var6) {
- System.out.println("Invalid URL - " + var4);
- } catch (NumberFormatException var7) {
- System.out.println("Invalid JUMP FRAME# - " + var4);
- }
- }
-
- return var3;
- } else {
- return false;
- }
- }
-
- protected String getURLFromPoint(int var1, int var2, int var3) {
- String var4 = null;
- FrameElement var5 = this.getFrameElementFromPoint(var1, var2, var3);
- if (var5 != null && var5.iHyperLinkURL != -1) {
- var4 = this.m_arstrHyperLinks[var5.iHyperLinkURL];
- }
-
- if (var4.length() < 1) {
- var4 = null;
- }
-
- return var4;
- }
-
- protected String getURLFromFrameElement(FrameElement var1) {
- String var2 = null;
- if (var1 != null && var1.iHyperLinkURL != -1) {
- var2 = this.m_arstrHyperLinks[var1.iHyperLinkURL];
- }
-
- if (var2 != null && var2.length() < 1) {
- var2 = null;
- }
-
- return var2;
- }
-
- protected FrameElement getFrameElementFromPoint(int var1, int var2, int var3) {
- Rectangle var4 = new Rectangle();
- FrameElement var5 = null;
-
- for(int var6 = this.m_frames[var1].length - 2; var6 >= 0; --var6) {
- var4.x = this.m_frames[var1][var6].left;
- var4.y = this.m_frames[var1][var6].top;
- var4.width = this.m_frames[var1][var6].right - var4.x;
- var4.height = this.m_frames[var1][var6].bottom - var4.y;
- if (var4.inside(var2, var3)) {
- var5 = this.m_frames[var1][var6];
- break;
- }
- }
-
- return var5;
- }
-
- public void paint(Graphics var1) {
- if (var1 != null && this.m_graphBuffer != null) {
- switch (this.lbGetStatus()) {
- case 0:
- case 1:
- this.m_graphBuffer.setColor(Color.white);
- this.m_graphBuffer.fillRect(0, 0, this.m_theApp.size().width, this.m_theApp.size().height);
- this.m_graphBuffer.setColor(Color.black);
- this.m_graphBuffer.setFont(new Font("Dialog", 0, 8));
- String var2 = "Astound WebMotion";
- String var3;
- if (this.lbGetStatus() == 1) {
- var3 = "animation loading...";
- } else {
- var3 = "animation (empty)";
- }
-
- int var4 = var1.getFontMetrics().getHeight();
- int var5 = var1.getFontMetrics().getAscent();
- int var6 = var1.getFontMetrics().getLeading();
- int var7 = (this.m_theApp.size().width - var1.getFontMetrics().stringWidth(var2)) / 2;
- int var8 = (this.m_theApp.size().width - var1.getFontMetrics().stringWidth(var3)) / 2;
- int var9 = (this.m_theApp.size().height - var4 * 2) / 2;
- this.m_graphBuffer.drawString(var2, var7, var9 + var5 + var6);
- this.m_graphBuffer.drawString(var3, var8, var4 + var9 + var5 + var6);
- break;
- case 2:
- case 3:
- case 4:
- this.m_graphBuffer.setColor(Color.white);
- this.m_graphBuffer.fillRect(0, 0, this.m_theApp.size().width, this.m_theApp.size().height);
- this.drawFrame(this.m_graphBuffer, this.m_iCurrentFrame - 1);
- }
-
- var1.drawImage(this.m_imageBuffer, 0, 0, (ImageObserver)null);
- }
-
- }
-
- public void update() {
- this.paint(this.m_graphApp);
- }
-
- protected final void setStatus(int var1) {
- if (var1 == 0 || var1 == 1 || var1 == 2 || var1 == 3 || var1 == 5 || var1 == 4) {
- this.m_iStatus = var1;
- }
-
- this.resumeEx();
- }
-
- public final int lbGetStatus() {
- int var1 = this.m_iStatus;
- return var1;
- }
-
- public final boolean lbIsAnimLoaded() {
- int var1 = this.lbGetStatus();
- boolean var2 = false;
- if (var1 == 2 || var1 == 3 || var1 == 4) {
- var2 = true;
- }
-
- return var2;
- }
-
- protected void suspendEx() {
- if (!this.m_bThreadSuspended) {
- this.m_bThreadSuspended = true;
- ((Thread)this).suspend();
- }
-
- }
-
- protected void resumeEx() {
- if (this.m_bThreadSuspended) {
- ((Thread)this).resume();
- this.m_bThreadSuspended = false;
- }
-
- }
-
- public synchronized boolean mouseDown(Event var1, int var2, int var3) {
- if (this.lbGetStatus() != 3) {
- return false;
- } else {
- long var4 = this.m_iWhenLastClick;
- this.m_iWhenLastClick = var1.when;
- boolean var6 = var1.clickCount > 1 && var1.when - var4 < 1000L;
- int var7 = 0;
- int var8 = 0;
- if ((var1.modifiers & 4) != 0) {
- var7 = var6 ? 16 : 8;
- var8 = var6 ? 8 : 4;
- } else {
- var7 = var6 ? 4 : 2;
- var8 = var6 ? 2 : 1;
- }
-
- if (this.m_iPause > 0 && (this.m_iPauseExit & var8) != 0) {
- this.m_bInteruptPauseEvent = true;
- }
-
- if (this.m_iPause <= 0 || this.m_bInteruptPauseEvent) {
- FrameElement var9 = this.getFrameElementFromPoint(this.m_iCurrentFrame - 1, var2, var3);
- if (var9 == null || !this.processEvents(var9, var7) && !this.isInteractive(var9)) {
- try {
- if (this.m_strDefaultHyperLink != null && this.m_strDefaultHyperLink.length() > 0) {
- if (this.m_strDefaultTarget != null && this.m_strDefaultTarget.length() > 0) {
- this.m_theApp.getAppletContext().showDocument(new URL(this.m_strDefaultHyperLink), this.m_strDefaultTarget);
- } else {
- this.m_theApp.getAppletContext().showDocument(new URL(this.m_strDefaultHyperLink));
- }
- }
- } catch (MalformedURLException var10) {
- System.out.println("Invalid Default HyperLink: " + this.m_strDefaultHyperLink);
- }
- }
- }
-
- return true;
- }
- }
-
- public synchronized boolean mouseMove(Event var1, int var2, int var3) {
- if (this.lbGetStatus() != 3) {
- return false;
- } else {
- String var4 = null;
- if (this.m_iPause <= 0 || this.m_bInteruptPauseEvent || (this.m_iPauseExit & 5) != 0) {
- FrameElement var5 = this.getFrameElementFromPoint(this.m_iCurrentFrame - 1, var2, var3);
- if (var5 != null) {
- var4 = this.getURLFromFrameElement(var5);
- if (var4 != null && var4.startsWith("FRAME:") || var4 == null && this.isInteractive(var5)) {
- var4 = "Click here!";
- }
- }
-
- if (var4 == null && this.m_strDefaultHyperLink != null) {
- var4 = this.m_strDefaultHyperLink;
- } else if (var4 == null) {
- var4 = "";
- }
- }
-
- this.setCursor(var4 != null && var4.length() > 0 ? 12 : 0);
- this.m_theApp.showStatus(var4);
- return true;
- }
- }
-
- protected boolean isInteractive(FrameElement var1) {
- boolean var2 = false;
- if (var1 != null) {
- String var3 = this.getURLFromFrameElement(var1);
- if (var3 != null) {
- var2 = true;
- } else if ((var1.iPause > -1 || var1.iFPS > -1 || var1.iSound > -1) && (var1.iTrigger & 30) != 0) {
- var2 = true;
- }
- }
-
- return var2;
- }
-
- protected Frame getTopFrame() {
- Container var1 = this.m_theApp.getParent();
-
- Frame var2;
- for(var2 = null; var1 != null; var1 = ((Component)var1).getParent()) {
- if (var1 instanceof Frame) {
- var2 = (Frame)var1;
- break;
- }
- }
-
- return var2;
- }
-
- protected int setCursor(int var1) {
- int var2 = 0;
- if (this.m_frameTop == null) {
- this.m_frameTop = this.getTopFrame();
- }
-
- if (this.m_frameTop != null) {
- var2 = this.m_frameTop.getCursorType();
- this.m_frameTop.setCursor(var1);
- this.m_theApp.getToolkit().sync();
- }
-
- return var2;
- }
-
- public final int lbGetPlayerVersionMajor() {
- return 1;
- }
-
- public final int lbGetPlayerVersionMinor() {
- return 2;
- }
-
- public final int lbGetFileVersionMajor() {
- int var1 = this.m_iMajorFileVersion;
- if (!this.lbIsAnimLoaded()) {
- var1 = 0;
- }
-
- return var1;
- }
-
- public final int lbGetFileVersionMinor() {
- int var1 = this.m_iMinorFileVersion;
- if (!this.lbIsAnimLoaded()) {
- var1 = 0;
- }
-
- return var1;
- }
- }
-